#先构建一副扑克
pkp1<-data.frame(face=rep(c(2:10,"J","Q","K","A"),4),hs=rep(c("黑桃","方块","红桃","梅花"),each=13))
pkp1<-rbind(pkp1,c("SmallJoker","小王"))
pkp1<-rbind(pkp1,c("BigJoker","大王"))


#用于操作的扑克
pkp2<-pkp1

#发牌:取顶端第二张！
licensing<-function(){
  assign("copypkp",pkp2[-1,],envir = globalenv())
  return (pkp2[1,])
}

print(licensing());


#洗牌
shuffle<-function(){
  pkp2<-pkp1
  random<-sample(c(1:52),size=52)
  for (i in 1:52)
  {
    assign("pkp2",pkp2[random,],envir = globalenv())
  }
  #print("your pkp has been shuffled")
}



#assign("copypkp", copypkp[-1,], envir = globalenv())：这行代码使用 assign 函数在全局环境中创建或修改一个名为 copypkp 的变量。这个变量被赋予 copypkp 数据框除去第一行之后的所有行。envir = globalenv() 参数指定了变量应该在全局环境中被创建或修改。

#copypkp[1,]：这行代码返回 copypkp 数据框的第一行。在函数内部，这将是在执行 assign 函数之后的 copypkp 数据框，因为第一行已经被移除并赋值给了全局环境中的 copypkp 变量。

# shuffle<-function(){ ... }：定义了一个名为 shuffle 的函数，该函数没有参数。
#
# pkp2<-pkp1：创建了一个名为 pkp2 的变量，它是 pkp1 数据框的一个副本。这意味着 pkp2 将包含 pkp1 的所有数据。
#
# random<-sample(c(1:52),size=52)：使用 sample 函数生成一个从1到52的随机排列的向量。这个向量将用作索引来重新排序 pkp2 数据框的行。
#
# for (i in 1:52) { ... }：使用一个循环来迭代52次，每次迭代都对应 pkp2 数据框中的一行。
#
# assign("pkp2", pkp2[random,], envir = globalenv())：在每次迭代中，使用 assign 函数将 pkp2 数据框按照 random 向量中的随机索引重新排序，并更新全局环境中的 pkp2 变量。这意味着每次循环都会更新 pkp2 的顺序。
#
# print("your pkp has been shuffled")：在函数的最后，打印一条消息表示洗牌操作已完成。
